package com.example.orderfood2.RecyclerViewAdapter;

import android.database.Cursor;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.example.orderfood2.R;

//这是RecycleView的适配器
// 定义适配器类，继承自 RecyclerView.Adapter
public class ClassAdapter extends RecyclerView.Adapter<ClassAdapter.ViewHolder> {
    // 用于存储要显示的数据列表
    private Cursor cursor;
    private OnItemClickListener listener; // 自定义接口，用于按钮点击回调
    // 构造函数，接收数据列表作为参数
    public ClassAdapter(Cursor cursor) {
        this.cursor = cursor;
    }
    // 定义 ViewHolder 类，继承自 RecyclerView.ViewHolder
    public static class ViewHolder extends RecyclerView.ViewHolder{
        // 用于显示文本的 TextView
        TextView tvId,tvClassNumber;
        Button btnEdit, btnDelete;
        // 构造函数，接收视图作为参数
        public ViewHolder(View itemView) {
            super(itemView);
            // 初始化 TextView
            tvId = itemView.findViewById(R.id.tv_id);
            tvClassNumber = itemView.findViewById(R.id.tv_classnumber);
            btnEdit = itemView.findViewById(R.id.btn_edit);
            btnDelete = itemView.findViewById(R.id.btn_delete);
        }
    }
    // 创建 ViewHolder 实例
    @NonNull
    @Override
    public ClassAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        // 从布局文件中加载视图
        //这行代码的作用是使用 LayoutInflater 从 android.R.layout.simple_list_item_1 这个布局文件创建一个 View 对象，
        // 但不会立即将其添加到 parent 中，后续可以对这个 View 对象进行进一步的操作
        //parent 就是 RecyclerView 本身
//        parent.getContext()是获取RecyclerView的父容器，即当前 Activity
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.item_class, parent, false);
        // 创建并返回 ViewHolder 实例
        return new ViewHolder(view);
    }

    // 将数据绑定到 ViewHolder 中的视图上
    @Override
    public void onBindViewHolder(@NonNull ClassAdapter.ViewHolder holder, int position) {
        if (cursor.moveToPosition(position)) {
            int id = cursor.getInt(0);
            String classNumber = cursor.getString(1);
//            position 表示当前列表项在 RecyclerView 中的位置（从 0 开始计数）。通常表示列表中某个元素的位置索引
            holder.tvId.setText(String.valueOf(id)); // id
            holder.tvClassNumber.setText(classNumber);     // classnumber
            // 修改按钮点击事件
            holder.btnEdit.setOnClickListener(v -> {
                if (listener != null) {
                    listener.onEditClick(position, id, classNumber);
                }
            });

            // 删除按钮点击事件
            holder.btnDelete.setOnClickListener(v -> {
                if (listener != null) {
                    listener.onDeleteClick(position, id);
                }
            });
        }
    }

    // 返回数据集中的项数
    @Override
    public int getItemCount() {
        return cursor.getCount();
    }

    // 定义点击事件接口
    public interface OnItemClickListener {
        void onEditClick(int position, int id, String classNumber);
        void onDeleteClick(int position, int id);
    }
    // 设置监听器
    public void setOnItemClickListener(OnItemClickListener listener) {
        this.listener =listener;
    }
}
